<?php

namespace IYUU\sdk\CoolQ\Domain;

use IYUU\sdk\CoolQ\Context;
use IYUU\sdk\CoolQ\Domain\User as DomainUser;
use IYUU\sdk\CoolQ\Event\Message as EventMessage;
use function IYUU\sdk\CoolQ\getOneBot;

/**
 * 管理员群聊消息处理器
 * Class MessageGroupMaster
 * @package IYUU\sdk\CoolQ\Domain
 */
class MessageGroupMaster
{
    /**
     * 应答方法
     * @param Context $context
     * @param EventMessage $msgObj
     * @return array
     */
    public static function respond(Context $context, EventMessage $msgObj): array
    {
        // 调试日志：群聊消息
        //file_put_contents(runtime_path() . '/groupMessage.log', __METHOD__ . PP($this->message, false), FILE_APPEND);
        $message = $context->get('message');
        $group_id = $context->get('group_id');
        /**
         * 功能：输出框架运行状态
         * 触发方法：$message等于status
         */
        if ($message === 'status') {
            $cq = getOneBot();
            $status = $cq->getStatusText();
            return EventMessage::replyGroup($status);
        }

        /**
         * 功能：输出版本信息（框架版本、接口版本、系统版本）
         * 触发方法：$message等于version
         */
        if ($message === 'version') {
            $cq = getOneBot();
            $status = $cq->getVersionInfoText();
            return EventMessage::replyGroup($status);
        }

        /**
         * 功能：读取群成员列表，插入数据库（用户表、群成员关系表）
         * - 群聊初始化（主人和机器人都在群内时，用此命令同步）
         * 触发方法：$message等于syncUserTable
         */
        if ($message === 'syncUserTable') {
            // 异步耗时任务
            if (function_exists('fastcgi_finish_request')) {
                echo json_encode(EventMessage::reply($message . '命令执行，正在同步...' . PHP_EOL . '群号：' . $group_id));
                fastcgi_finish_request();
                // 初始化群用户 2021年8月7日
                $rs = DomainUser::syncUserTable((int)$group_id);
                $msgObj->sendBack(json_encode($rs));
            }
        }

        return [];
    }
}
